// 闭包也可以作为函数的返回值。
// 由于闭包的大小在编译时是未知的，因此需要使用 Box<dyn Fn> 来返回闭包：
fn create_adder(x: i32) -> Box<dyn Fn(i32) -> i32> {
    Box::new(move |y| x + y)
}

#[test]
fn test_closure_return() {
    let add5 = create_adder(5);
    let result = add5(3);
    println!("5 + 3 = {}", result);
}